package com.insuremonitor.system.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.insuremonitor.common.annotation.Excel;
import com.insuremonitor.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 保险投保信息对象 front_warranty_insure
 *
 * @author ruoyi
 * @date 2023-11-27
 */
public class FrontWarrantyInsure extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** 保险投保ID */
    private Long warrantyId;

    /** 用户id */
    @Excel(name = "用户id")
    private Long customerId;

    /** 保险品种ID */
    @Excel(name = "保险品种ID")
    private Long insureInfoId;

    /** 保险模板code */
    @Excel(name = "保险模板code")
    private String templateCode;

    /** 保险号 */
    @Excel(name = "保险号")
    private String insureNum;

    /** 保单url */
    @Excel(name = "保单url")
    private String insureUrl;

    /** 订单编号 */
    @Excel(name = "订单编号")
    private String orderNum;

    /** 报案号 */
    @Excel(name = "报案号")
    private String reportNum;

    /** 订单状态 0：订单取消  1：订单待支付 2：订单支付成功 3：订单成功 4：订单失败 */
    @Excel(name = "订单状态 0：订单取消  1：订单待支付 2：订单支付成功 3：订单成功 4：订单失败")
    private String orderStatus;

    /** 订单状态备注 */
    @Excel(name = "订单状态备注")
    private String orderStatusRemark;

    /** 保险出险状态 0未立案  1 报案 2立案 3取消报案 4勘察/定损 5核赔 6付款 7结案 */
    @Excel(name = "保险出险状态 0未立案  1 报案 2立案 3取消报案 4勘察/定损 5核赔 6付款 7结案")
    private String reportStatus;

    /** 报案取消状态备注 */
    @Excel(name = "报案取消状态备注")
    private String reportCancelRemark;

    /** 赔付金额 */
    @Excel(name = "赔付金额")
    private BigDecimal reportPayMoney;

    /** 修改状态 （0不允许修改   1允许修改） */
    @Excel(name = "修改状态 ", readConverterExp = "0=不允许修改,1=允许修改")
    private String modifyStatus;

    /** 申请修改状态 （0未申请   1申请 2申请通过 3申请失败） */
    @Excel(name = "申请修改状态 ", readConverterExp = "0=未申请,1=申请,2=申请通过,3=申请失败")
    private String applyModifyStatus;

    /** 修改订单临时订单号 */
    @Excel(name = "修改订单临时订单号")
    private String modifyOrderNum;

    /** 投保人id */
    @Excel(name = "投保人id")
    private Long insureId;

    /** 投保人名称 */
    @Excel(name = "投保人名称")
    private String insureName;

    /** 证件类型（1身份证 2统一社会信用代码） */
    @Excel(name = "证件类型", readConverterExp = "1=身份证,2=统一社会信用代码")
    private String insureCertificateType;

    /** 证件号码 */
    @Excel(name = "证件号码")
    private String insureCertificateNumber;

    /** 被保险人id */
    @Excel(name = "被保险人id")
    private Long insuredId;

    /** 被投保人名称 */
    @Excel(name = "被投保人名称")
    private String insuredName;

    /** 被投保证件类型（1身份证 2统一社会信用代码） */
    @Excel(name = "被投保证件类型", readConverterExp = "1=身份证,2=统一社会信用代码")
    private String insuredCertificateType;

    /** 被投保证件号码 */
    @Excel(name = "被投保证件号码")
    private String insuredCertificateNumber;

    /** 联系人姓名 */
    @Excel(name = "联系人姓名")
    private String contactName;

    /** 联系人电话 */
    @Excel(name = "联系人电话")
    private String contactPhone;

    /** 险种id */
    @Excel(name = "险种id")
    private Long insureKindId;

    /** 险种json */
    @Excel(name = "险种json")
    private String insureKindJson;

    /** 运输方式名称 */
    @Excel(name = "运输方式名称")
    private String transportTypeName;

    /** 货物类型id */
    @Excel(name = "货物类型id")
    private Long insureGoodsId;

    /** 货物类型json */
    @Excel(name = "货物类型json")
    private String insureGoodsJson;

    /** 货物名称 */
    @Excel(name = "货物名称")
    private String goodsName;

    /** 包装方式名称 */
    @Excel(name = "包装方式名称")
    private String packName;

    /** 集装箱号（以;隔开） */
    @Excel(name = "集装箱号", readConverterExp = "以=;隔开")
    private String containerNumber;

    /** 包装与数量 */
    @Excel(name = "包装与数量")
    private String containerCount;

    /** 船名航次 */
    @Excel(name = "船名航次")
    private String shipNumber;

    /** 运输工具 */
    @Excel(name = "运输工具")
    private String transportTool;

    /** 标记、发票号、运单号 */
    @Excel(name = "标记、发票号、运单号")
    private String tagInvoiceWaybill;

    /** 启运地 */
    @Excel(name = "启运地")
    private String startPlace;

    /** 目的地 */
    @Excel(name = "目的地")
    private String endPlace;

    /** 中转地 */
    @Excel(name = "中转地")
    private String middlePlace;

    /** 启运时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "启运时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 主险条款id */
    @Excel(name = "主险条款id")
    private Long mainInsureId;

    /** 主险条款json */
    @Excel(name = "主险条款json")
    private String mainInsureJson;

    /** 扩展保险（以;隔开） */
    @Excel(name = "扩展保险", readConverterExp = "以=;隔开")
    private String insureExtendIds;

    /** 扩展保险json */
    @Excel(name = "扩展保险json")
    private String insureExtendJson;

    /** 保险总金额（总货值） */
    @Excel(name = "保险总金额", readConverterExp = "总=货值")
    private BigDecimal totalFee;

    /** vip优惠费率（单位%） */
    @Excel(name = "vip优惠费率", readConverterExp = "单=位%")
    private BigDecimal vipRate;

    /** vip优惠金额 */
    @Excel(name = "vip优惠金额")
    private BigDecimal vipFee;

    /** 保险费率（单位%） */
    @Excel(name = "保险费率", readConverterExp = "单=位%")
    private BigDecimal insureRate;

    /** 余额 */
    @Excel(name = "余额")
    private BigDecimal insureFee;

    /** 发票状态（0不需要 1普票 2专票） */
    @Excel(name = "发票状态", readConverterExp = "0=不需要,1=普票,2=专票")
    private String invoiceStatus;

    /** 发票抬头 */
    @Excel(name = "发票抬头")
    private String invoiceHead;

    /** 统一社会信用代码 */
    @Excel(name = "统一社会信用代码")
    private String creditCode;

    /** 注册地址 */
    @Excel(name = "注册地址")
    private String registerAddress;

    /** 单位电话 */
    @Excel(name = "单位电话")
    private String companyPhone;

    /** 收货人电话 */
    @Excel(name = "收货人电话")
    private String consigneePhone;

    /** 收货人邮箱 */
    @Excel(name = "收货人邮箱")
    private String consigneeMail;

    /** 银行账号 */
    @Excel(name = "银行账号")
    private String bankAccount;

    /** 支行名称 */
    @Excel(name = "支行名称")
    private String bankBranchName;

    /** 开票状态（0未开票 1已开票 ） */
    @Excel(name = "开票状态", readConverterExp = "0=未开票,1=已开票")
    private String opnenInvoiceStatus;

    /** 发票url */
    @Excel(name = "发票url")
    private String invoiceUrl;

    /** 开票时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开票时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date invoiceTime;

    /** 状态（0停用 1正常） */
    @Excel(name = "状态", readConverterExp = "0=停用,1=正常")
    private String status;

    public void setWarrantyId(Long warrantyId)
    {
        this.warrantyId = warrantyId;
    }

    public Long getWarrantyId()
    {
        return warrantyId;
    }
    public void setCustomerId(Long customerId)
    {
        this.customerId = customerId;
    }

    public Long getCustomerId()
    {
        return customerId;
    }
    public void setInsureInfoId(Long insureInfoId)
    {
        this.insureInfoId = insureInfoId;
    }

    public Long getInsureInfoId()
    {
        return insureInfoId;
    }
    public void setTemplateCode(String templateCode)
    {
        this.templateCode = templateCode;
    }

    public String getTemplateCode()
    {
        return templateCode;
    }
    public void setInsureNum(String insureNum)
    {
        this.insureNum = insureNum;
    }

    public String getInsureNum()
    {
        return insureNum;
    }
    public void setInsureUrl(String insureUrl)
    {
        this.insureUrl = insureUrl;
    }

    public String getInsureUrl()
    {
        return insureUrl;
    }
    public void setOrderNum(String orderNum)
    {
        this.orderNum = orderNum;
    }

    public String getOrderNum()
    {
        return orderNum;
    }
    public void setReportNum(String reportNum)
    {
        this.reportNum = reportNum;
    }

    public String getReportNum()
    {
        return reportNum;
    }
    public void setOrderStatus(String orderStatus)
    {
        this.orderStatus = orderStatus;
    }

    public String getOrderStatus()
    {
        return orderStatus;
    }
    public void setOrderStatusRemark(String orderStatusRemark)
    {
        this.orderStatusRemark = orderStatusRemark;
    }

    public String getOrderStatusRemark()
    {
        return orderStatusRemark;
    }
    public void setReportStatus(String reportStatus)
    {
        this.reportStatus = reportStatus;
    }

    public String getReportStatus()
    {
        return reportStatus;
    }
    public void setReportCancelRemark(String reportCancelRemark)
    {
        this.reportCancelRemark = reportCancelRemark;
    }

    public String getReportCancelRemark()
    {
        return reportCancelRemark;
    }
    public void setReportPayMoney(BigDecimal reportPayMoney)
    {
        this.reportPayMoney = reportPayMoney;
    }

    public BigDecimal getReportPayMoney()
    {
        return reportPayMoney;
    }
    public void setModifyStatus(String modifyStatus)
    {
        this.modifyStatus = modifyStatus;
    }

    public String getModifyStatus()
    {
        return modifyStatus;
    }
    public void setApplyModifyStatus(String applyModifyStatus)
    {
        this.applyModifyStatus = applyModifyStatus;
    }

    public String getApplyModifyStatus()
    {
        return applyModifyStatus;
    }
    public void setModifyOrderNum(String modifyOrderNum)
    {
        this.modifyOrderNum = modifyOrderNum;
    }

    public String getModifyOrderNum()
    {
        return modifyOrderNum;
    }
    public void setInsureId(Long insureId)
    {
        this.insureId = insureId;
    }

    public Long getInsureId()
    {
        return insureId;
    }
    public void setInsureName(String insureName)
    {
        this.insureName = insureName;
    }

    public String getInsureName()
    {
        return insureName;
    }
    public void setInsureCertificateType(String insureCertificateType)
    {
        this.insureCertificateType = insureCertificateType;
    }

    public String getInsureCertificateType()
    {
        return insureCertificateType;
    }
    public void setInsureCertificateNumber(String insureCertificateNumber)
    {
        this.insureCertificateNumber = insureCertificateNumber;
    }

    public String getInsureCertificateNumber()
    {
        return insureCertificateNumber;
    }
    public void setInsuredId(Long insuredId)
    {
        this.insuredId = insuredId;
    }

    public Long getInsuredId()
    {
        return insuredId;
    }
    public void setInsuredName(String insuredName)
    {
        this.insuredName = insuredName;
    }

    public String getInsuredName()
    {
        return insuredName;
    }
    public void setInsuredCertificateType(String insuredCertificateType)
    {
        this.insuredCertificateType = insuredCertificateType;
    }

    public String getInsuredCertificateType()
    {
        return insuredCertificateType;
    }
    public void setInsuredCertificateNumber(String insuredCertificateNumber)
    {
        this.insuredCertificateNumber = insuredCertificateNumber;
    }

    public String getInsuredCertificateNumber()
    {
        return insuredCertificateNumber;
    }
    public void setContactName(String contactName)
    {
        this.contactName = contactName;
    }

    public String getContactName()
    {
        return contactName;
    }
    public void setContactPhone(String contactPhone)
    {
        this.contactPhone = contactPhone;
    }

    public String getContactPhone()
    {
        return contactPhone;
    }
    public void setInsureKindId(Long insureKindId)
    {
        this.insureKindId = insureKindId;
    }

    public Long getInsureKindId()
    {
        return insureKindId;
    }
    public void setInsureKindJson(String insureKindJson)
    {
        this.insureKindJson = insureKindJson;
    }

    public String getInsureKindJson()
    {
        return insureKindJson;
    }
    public void setTransportTypeName(String transportTypeName)
    {
        this.transportTypeName = transportTypeName;
    }

    public String getTransportTypeName()
    {
        return transportTypeName;
    }
    public void setInsureGoodsId(Long insureGoodsId)
    {
        this.insureGoodsId = insureGoodsId;
    }

    public Long getInsureGoodsId()
    {
        return insureGoodsId;
    }
    public void setInsureGoodsJson(String insureGoodsJson)
    {
        this.insureGoodsJson = insureGoodsJson;
    }

    public String getInsureGoodsJson()
    {
        return insureGoodsJson;
    }
    public void setGoodsName(String goodsName)
    {
        this.goodsName = goodsName;
    }

    public String getGoodsName()
    {
        return goodsName;
    }
    public void setPackName(String packName)
    {
        this.packName = packName;
    }

    public String getPackName()
    {
        return packName;
    }
    public void setContainerNumber(String containerNumber)
    {
        this.containerNumber = containerNumber;
    }

    public String getContainerNumber()
    {
        return containerNumber;
    }
    public void setContainerCount(String containerCount)
    {
        this.containerCount = containerCount;
    }

    public String getContainerCount()
    {
        return containerCount;
    }
    public void setShipNumber(String shipNumber)
    {
        this.shipNumber = shipNumber;
    }

    public String getShipNumber()
    {
        return shipNumber;
    }
    public void setTransportTool(String transportTool)
    {
        this.transportTool = transportTool;
    }

    public String getTransportTool()
    {
        return transportTool;
    }
    public void setTagInvoiceWaybill(String tagInvoiceWaybill)
    {
        this.tagInvoiceWaybill = tagInvoiceWaybill;
    }

    public String getTagInvoiceWaybill()
    {
        return tagInvoiceWaybill;
    }
    public void setStartPlace(String startPlace)
    {
        this.startPlace = startPlace;
    }

    public String getStartPlace()
    {
        return startPlace;
    }
    public void setEndPlace(String endPlace)
    {
        this.endPlace = endPlace;
    }

    public String getEndPlace()
    {
        return endPlace;
    }
    public void setMiddlePlace(String middlePlace)
    {
        this.middlePlace = middlePlace;
    }

    public String getMiddlePlace()
    {
        return middlePlace;
    }
    public void setStartTime(Date startTime)
    {
        this.startTime = startTime;
    }

    public Date getStartTime()
    {
        return startTime;
    }
    public void setMainInsureId(Long mainInsureId)
    {
        this.mainInsureId = mainInsureId;
    }

    public Long getMainInsureId()
    {
        return mainInsureId;
    }
    public void setMainInsureJson(String mainInsureJson)
    {
        this.mainInsureJson = mainInsureJson;
    }

    public String getMainInsureJson()
    {
        return mainInsureJson;
    }
    public void setInsureExtendIds(String insureExtendIds)
    {
        this.insureExtendIds = insureExtendIds;
    }

    public String getInsureExtendIds()
    {
        return insureExtendIds;
    }
    public void setInsureExtendJson(String insureExtendJson)
    {
        this.insureExtendJson = insureExtendJson;
    }

    public String getInsureExtendJson()
    {
        return insureExtendJson;
    }
    public void setTotalFee(BigDecimal totalFee)
    {
        this.totalFee = totalFee;
    }

    public BigDecimal getTotalFee()
    {
        return totalFee;
    }
    public void setVipRate(BigDecimal vipRate)
    {
        this.vipRate = vipRate;
    }

    public BigDecimal getVipRate()
    {
        return vipRate;
    }
    public void setVipFee(BigDecimal vipFee)
    {
        this.vipFee = vipFee;
    }

    public BigDecimal getVipFee()
    {
        return vipFee;
    }
    public void setInsureRate(BigDecimal insureRate)
    {
        this.insureRate = insureRate;
    }

    public BigDecimal getInsureRate()
    {
        return insureRate;
    }
    public void setInsureFee(BigDecimal insureFee)
    {
        this.insureFee = insureFee;
    }

    public BigDecimal getInsureFee()
    {
        return insureFee;
    }
    public void setInvoiceStatus(String invoiceStatus)
    {
        this.invoiceStatus = invoiceStatus;
    }

    public String getInvoiceStatus()
    {
        return invoiceStatus;
    }
    public void setInvoiceHead(String invoiceHead)
    {
        this.invoiceHead = invoiceHead;
    }

    public String getInvoiceHead()
    {
        return invoiceHead;
    }
    public void setCreditCode(String creditCode)
    {
        this.creditCode = creditCode;
    }

    public String getCreditCode()
    {
        return creditCode;
    }
    public void setRegisterAddress(String registerAddress)
    {
        this.registerAddress = registerAddress;
    }

    public String getRegisterAddress()
    {
        return registerAddress;
    }
    public void setCompanyPhone(String companyPhone)
    {
        this.companyPhone = companyPhone;
    }

    public String getCompanyPhone()
    {
        return companyPhone;
    }
    public void setConsigneePhone(String consigneePhone)
    {
        this.consigneePhone = consigneePhone;
    }

    public String getConsigneePhone()
    {
        return consigneePhone;
    }
    public void setConsigneeMail(String consigneeMail)
    {
        this.consigneeMail = consigneeMail;
    }

    public String getConsigneeMail()
    {
        return consigneeMail;
    }
    public void setBankAccount(String bankAccount)
    {
        this.bankAccount = bankAccount;
    }

    public String getBankAccount()
    {
        return bankAccount;
    }
    public void setBankBranchName(String bankBranchName)
    {
        this.bankBranchName = bankBranchName;
    }

    public String getBankBranchName()
    {
        return bankBranchName;
    }
    public void setOpnenInvoiceStatus(String opnenInvoiceStatus)
    {
        this.opnenInvoiceStatus = opnenInvoiceStatus;
    }

    public String getOpnenInvoiceStatus()
    {
        return opnenInvoiceStatus;
    }
    public void setInvoiceUrl(String invoiceUrl)
    {
        this.invoiceUrl = invoiceUrl;
    }

    public String getInvoiceUrl()
    {
        return invoiceUrl;
    }
    public void setInvoiceTime(Date invoiceTime)
    {
        this.invoiceTime = invoiceTime;
    }

    public Date getInvoiceTime()
    {
        return invoiceTime;
    }
    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("warrantyId", getWarrantyId())
                .append("customerId", getCustomerId())
                .append("insureInfoId", getInsureInfoId())
                .append("templateCode", getTemplateCode())
                .append("insureNum", getInsureNum())
                .append("insureUrl", getInsureUrl())
                .append("orderNum", getOrderNum())
                .append("reportNum", getReportNum())
                .append("orderStatus", getOrderStatus())
                .append("orderStatusRemark", getOrderStatusRemark())
                .append("reportStatus", getReportStatus())
                .append("reportCancelRemark", getReportCancelRemark())
                .append("reportPayMoney", getReportPayMoney())
                .append("modifyStatus", getModifyStatus())
                .append("applyModifyStatus", getApplyModifyStatus())
                .append("modifyOrderNum", getModifyOrderNum())
                .append("insureId", getInsureId())
                .append("insureName", getInsureName())
                .append("insureCertificateType", getInsureCertificateType())
                .append("insureCertificateNumber", getInsureCertificateNumber())
                .append("insuredId", getInsuredId())
                .append("insuredName", getInsuredName())
                .append("insuredCertificateType", getInsuredCertificateType())
                .append("insuredCertificateNumber", getInsuredCertificateNumber())
                .append("contactName", getContactName())
                .append("contactPhone", getContactPhone())
                .append("insureKindId", getInsureKindId())
                .append("insureKindJson", getInsureKindJson())
                .append("transportTypeName", getTransportTypeName())
                .append("insureGoodsId", getInsureGoodsId())
                .append("insureGoodsJson", getInsureGoodsJson())
                .append("goodsName", getGoodsName())
                .append("packName", getPackName())
                .append("containerNumber", getContainerNumber())
                .append("containerCount", getContainerCount())
                .append("shipNumber", getShipNumber())
                .append("transportTool", getTransportTool())
                .append("tagInvoiceWaybill", getTagInvoiceWaybill())
                .append("startPlace", getStartPlace())
                .append("endPlace", getEndPlace())
                .append("middlePlace", getMiddlePlace())
                .append("startTime", getStartTime())
                .append("mainInsureId", getMainInsureId())
                .append("mainInsureJson", getMainInsureJson())
                .append("insureExtendIds", getInsureExtendIds())
                .append("insureExtendJson", getInsureExtendJson())
                .append("totalFee", getTotalFee())
                .append("vipRate", getVipRate())
                .append("vipFee", getVipFee())
                .append("insureRate", getInsureRate())
                .append("insureFee", getInsureFee())
                .append("invoiceStatus", getInvoiceStatus())
                .append("invoiceHead", getInvoiceHead())
                .append("creditCode", getCreditCode())
                .append("registerAddress", getRegisterAddress())
                .append("companyPhone", getCompanyPhone())
                .append("consigneePhone", getConsigneePhone())
                .append("consigneeMail", getConsigneeMail())
                .append("bankAccount", getBankAccount())
                .append("bankBranchName", getBankBranchName())
                .append("opnenInvoiceStatus", getOpnenInvoiceStatus())
                .append("invoiceUrl", getInvoiceUrl())
                .append("invoiceTime", getInvoiceTime())
                .append("status", getStatus())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }

    private List<FrontInsureRateExtend> insureRateExtends;

    private FrontInsureRateKind insureRateKind;

    public List<FrontInsureRateExtend> getInsureRateExtends() {
        return insureRateExtends;
    }

    public void setInsureRateExtends(List<FrontInsureRateExtend> insureRateExtends) {
        this.insureRateExtends = insureRateExtends;
    }


    public FrontInsureRateKind getInsureRateKind() {
        return insureRateKind;
    }

    public void setInsureRateKind(FrontInsureRateKind insureRateKind) {
        this.insureRateKind = insureRateKind;
    }

    private String templateName;

    public String getTemplateName() {
        return templateName;
    }

    public void setTemplateName(String templateName) {
        this.templateName = templateName;
    }


    private FrontReportInsure frontReportInsure;

    private FrontReportInsureAccount frontReportInsureAccount;

    private  List<FrontReportInsureProcess>  frontReportInsureProcesses;

    public List<FrontReportInsureProcess> getFrontReportInsureProcesses() {
        return frontReportInsureProcesses;
    }

    public void setFrontReportInsureProcesses(List<FrontReportInsureProcess> frontReportInsureProcesses) {
        this.frontReportInsureProcesses = frontReportInsureProcesses;
    }

    public FrontReportInsure getFrontReportInsure() {
        return frontReportInsure;
    }

    public void setFrontReportInsure(FrontReportInsure frontReportInsure) {
        this.frontReportInsure = frontReportInsure;
    }

    public FrontReportInsureAccount getFrontReportInsureAccount() {
        return frontReportInsureAccount;
    }

    public void setFrontReportInsureAccount(FrontReportInsureAccount frontReportInsureAccount) {
        this.frontReportInsureAccount = frontReportInsureAccount;
    }

//    public String  rollBack;
//    public String rollBackRemark;
//
//    public String getRollBack() {
//        return rollBack;
//    }
//
//    public void setRollBack(String rollBack) {
//        this.rollBack = rollBack;
//    }
//
//    public String getRollBackRemark() {
//        return rollBackRemark;
//    }
//
//    public void setRollBackRemark(String rollBackRemark) {
//        this.rollBackRemark = rollBackRemark;
//    }
}
